Virtual memory is a memory management technique, typically used for multitasking kernels, in which a computer architecture's various forms of computer data storage are virtualized, allowing a program to be designed to access a common type of memory operating in the manner of directly addressable read/write memory or random access memory (RAM). Operating systems that support virtual memory run individual processes in a dedicated address space, specific to a process, enabling the processes to operate as if having sole access to the virtual memory. Virtual memory facilitates application programming by hiding fragmentation of physical memory; by delegating to the kernel the burden of managing the memory hierarchy, thus eliminating application program handling of overlays explicitly. Without virtual memory hardware, whenever program code or data overlays are moved to a new location in memory, the program code may have to be altered so that addresses point correctly to the new locations in memory. When each process is run in a virtual address space, the burden of updating of program code is avoided.
A cryptographic system is a data processing, information processing, computing system, or the like including cryptographic applications and/or functions. Examples of cryptographic systems include secure email systems, smartcards, point of sales terminals, network routers, and the like including methods such as digital signatures, cryptographic hash functions, key management techniques, and the like. Cryptographic systems comprise cryptographic primitives of various levels of complexity.
Typical cryptographic systems include algorithms for key generation, encryption, decryption, digital signatures, and digital signature verification. Ciphers refer to a pair of algorithms, one for encryption and one for decryption. Cryptographic systems commonly use a key generation algorithm and often exploit public key techniques and/or symmetric key techniques.